package com.jereh.topnews.util;

import android.content.Context;

import com.android.volley.AuthFailureError;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.Volley;
import com.jereh.topnews.callback.CallBack;
import com.jereh.topnews.request.JerehRequest;

import java.util.HashMap;
import java.util.Map;

/**
 * 实现网络请求获取数据，解析数据，主线程及子线程需要做的所有工作
 * Created by Administrator on 2016/11/18.
 */
public class RequestUtil {
    private Context ctx;//上下文
    private CallBack callBack;//回调
    private RequestQueue queue;//请求管理者（请求队列）

    public RequestUtil(Context ctx, CallBack callBack) {
        this.ctx = ctx;
        this.callBack = callBack;
        //通过上下文创建一个请求队列
        queue= Volley.newRequestQueue(ctx);
    }

    /**
     * 把整个下载流程，解析流程执行完毕，ui通过callback进行回调渲染
     * @param url
     */
    public void setDataByUrl(String url) {
        //get传参
        JerehRequest request=new JerehRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String json) {
                //当请求返回了正常响应的结果时，会回调这个方法
                callBack.callback(json);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                //当请求响应错误的情况下，回调这个方法，返回错误信息
                volleyError.printStackTrace();
                callBack.errorCallback();
            }
        }){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> map=new HashMap<>();
                map.put("apikey","a52d8b4dfce6acab1649ad427584483d");
                return map;
            }

        };
        //把请求添加到请求队列中去
        queue.add(request);
    }

}
